import time
import json
with open('name.txt','r') as f:
    name_dict = json.load(f)
    print('登陆信息',name_dict)

with open('money.txt', 'r') as f:
    money_dict = json.load(f)
    print('账户余额',money_dict)
with open('phone.txt', 'r') as f:
    phone_dict = json.load(f)
    print('联系方式',phone_dict)
print('{:>^20}'.format(' 欢迎使用X行ATM机 '))

time.sleep(1)
while True:
    print('{:^20}'.format(' (1) 用户注册 '))
    print('{:^20}'.format(' (2) 用户登陆 '))
    print('{:^20}'.format(' (0) 直接退出 '))
    choice = input('请按1或2选择对应的操作,0退出')
    if choice not in '012':
        print('{:^20}'.format('无效的输入，请重新输入'))
        continue

    if choice == '1':
        while True:
            name_input = input('{:^20}'.format('请输入要注册的用户名'))
            if name_input in name_dict.keys():
                print('{:^20}'.format('用户名已存在，请重新输入'))
                continue
            else:
                while True:
                    passwd_input = input('{:^20}'.format('请输入密码'))
                    passwd_comfirm = input('{:^20}'.format('请确认输入密码'))
                    if passwd_comfirm != passwd_input:
                        print('{:^20}'.format('两次密码不一致，请重新输入'))
                        continue
                    else:
                        phone = input('{:^20}'.format('请输入手机号码'))
                        name_dict[name_input] = passwd_input
                        money_dict[name_input] = 5000
                        phone_dict[name_input] = phone
                        print('成功创建用户{} 免费赠送5000元'.format(name_input))
                        break
                break
    elif choice == '2':
        # 这个嵌套的是不是有点多？考虑优化下
        for i in range(3):
            name_login = input('{:^20}'.format('请输入你的用户名'))
            passwd_login = input('{:^20}'.format('请输入你的密码'))
            if name_login not in name_dict.keys() :
                print('{:^20}'.format('用户名输入错误'))
                continue
            else:
                if passwd_login != name_dict[name_login]:
                    print('{:^20}'.format('密码输入错误'))
                    continue
                else:
                    print('{:^20}'.format('成功登陆'))
                    while True:
                        print('{:^20}'.format(' (1) 查询余额 '))
                        print('{:^20}'.format(' (2) 转帐汇款 '))
                        print('{:^20}'.format(' (3) 存取款 '))
                        print('{:^20}'.format(' (0) 安全退出 '))
                        choose = input('{:^20}'.format('请按数字选择对应的操作'))
                        if choose not in '0123':
                            print('{:^20}'.format('无效的输入，请重新输入'))
                            continue
                        elif choose == '1':
                            print('您的余额为 {}'.format(money_dict[name_login]))
                        elif choose == '2':
                            while True:
                                name_set = {name for name in name_dict.keys() if name != name_login}
                                print('{:^20}'.format('汇款帐号名单：'))
                                print(*name_set)
                                name_to = input('{:^20}'.format('请输入对方帐号名称'))
                                if name_to not in name_dict.keys():
                                    print('{:^20}'.format('用户名不存在！！!'))
                                    print('{:^20}'.format(' (1) 重新输入 '))
                                    print(('{:^20}'.format(' (2) 返回 ')))
                                    while True:
                                        c = input('{:^20}'.format('请按数字选择对应的操作'))
                                        if c not in '12':
                                            print('{:^20}'.format('无效的输入，请重新输入'))
                                            continue
                                        if c == '1':
                                            break

                                        if c == '2':
                                            break
                                    if c == '2':
                                        break
                                else:
                                    while True:
                                        print('{:^20}'.format(' 你的余额为：{} '.format(money_dict[name_login])))
                                        money = input('{:^20}'.format(' 请输入转帐金额 '))
                                        if int(money) > money_dict[name_login]:
                                            print('{:^20}'.format(' 余额不足！！！ '))
                                            c = input('{:^20}'.format('按任意键重新输入，q返回  '))
                                            if c != 'q':
                                                continue
                                            else:
                                                break
                                        else:
                                            money_dict[name_login] -= int(money)
                                            money_dict[name_to] += int(money)
                                            print('{:^20}'.format(' 转帐成功 '))
                                            c = input('{:^20}'.format('按任意键继续转账，q返回  '))
                                            if c != 'q':
                                                continue
                                            else:
                                                break

                        elif choose == '3':
                            while True:
                                print('{:^20}'.format(' (1) 存款 '))
                                print('{:^20}'.format(' (2) 取款 '))
                                print('{:^20}'.format(' (0) 返回 '))
                                c = input('{:^20}'.format('请按数字选择对应的操作'))
                                if c not in '012':
                                    print('{:^20}'.format('无效的输入，请重新输入'))
                                    continue
                                elif c == '1':
                                    while True:
                                        money = input('{:^20}'.format(' 请输入金额 '))
                                        money_dict[name_login] += int(money)
                                        print('成功存入{}元,账户余额为{} '.format(int(money),money_dict[name_login]))
                                        c = input('{:^20}'.format('按任意键继续转账，q返回  '))
                                        if c != 'q':
                                            continue
                                        else:
                                            break
                                elif c == '2':
                                    while True:
                                        print('{:^20}'.format(' 你的余额为：{} '.format(money_dict[name_login])))
                                        money = input('{:^20}'.format(' 请输入金额 '))
                                        if int(money) > money_dict[name_login]:
                                            print('{:^20}'.format(' 余额不足！！！ '))
                                            continue
                                        else:
                                            money_dict[name_login] -= int(money)
                                            print('成功取款{}元,账户余额为{} '.format(int(money),money_dict[name_login]))
                                            c = input('{:^20}'.format('按任意键继续取款，q返回  '))
                                            if c != 'q':
                                                continue
                                            else:
                                                break
                                else:
                                    break
                        else:
                            break
                break
    else:
        with open('name.txt', 'w') as f:
            json.dump(name_dict,f)


        with open('money.txt', 'w') as f:
            json.dump(money_dict,f)

        with open('phone.txt', 'w') as f:
            json.dump(phone_dict,f)
        break





